package com.rongji.cms.tools.db.utils;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.rongji.cms.tools.db.domain.vo.DiffColumnVo;
import com.rongji.cms.tools.db.domain.vo.LackColumnVo;
import com.rongji.cms.tools.db.domain.vo.LackTableVo;
import lombok.extern.slf4j.Slf4j;

import java.io.*;

/**
 * @author yang
 * @date 2023/1/29 13:56
 * @description
 */
@Slf4j
public class DbResultUtil {
    static String outTxtFile = "C:\\compareResult.txt";
    static String outExcelFile = "C:\\compareResult.xls";

    /**
     * 将对比结果写入到txt
     *
     * @param compareResult
     */
    public static void writeToTxt(String compareResult) {
        try {
            //1、创建一个文件对象
            File txtFile = new File(outTxtFile);
            //2、判断文件是否存在，不存在则创建一个Excel文件
            if (!txtFile.exists()) {
                try {
                    txtFile.createNewFile();//创建一个新的文件
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            BufferedWriter out = new BufferedWriter(new FileWriter(txtFile));

            out.write(compareResult);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
        log.info("txt导出完成。。。。");
    }

    /**
     * 将对比结果导出到excel
     * 3个sheet写入到同一个excel文件
     */
    public static void writeToExcel() {
        //1、创建一个文件对象
        File excelFile = new File(outExcelFile);
        //2、判断文件是否存在，不存在则创建一个Excel文件
        if (!excelFile.exists()) {
            try {
                excelFile.createNewFile();//创建一个新的文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        ExcelWriter excelWriter = null;
        try {
            OutputStream os = new FileOutputStream(excelFile);

            excelWriter = EasyExcel.write(os).build();

//            缺少的表
            // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。
            WriteSheet lackTableSheet = EasyExcel.writerSheet(0, "缺少的表").head(LackTableVo.class).build();
            excelWriter.write(DbCompareUtil.lackTableVoList, lackTableSheet);
//            缺少的字段
            WriteSheet lackColumnSheet = EasyExcel.writerSheet(1, "缺少的字段").head(LackColumnVo.class).build();
            excelWriter.write(DbCompareUtil.lackColumnVoList, lackColumnSheet);
//            差异的字段
            WriteSheet diffColumnSheet = EasyExcel.writerSheet(2, "有差异的字段").head(DiffColumnVo.class).build();
            excelWriter.write(DbCompareUtil.diffColumnVoList, diffColumnSheet);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            // 千万别忘记finish 会帮忙关闭流
            if (excelWriter != null) {
                excelWriter.finish();
            }

            log.info("excel导出完成。。。。");
        }
    }

}
